package org.apcs.pokemon.pokemon;

/**
 * Author:			Zachary Reed
 * Date Created:	Mar 25, 2010
 * Last Modified:	Mar 28, 2010
 * Package:			org.apcs.pokemon.pokemon
 * Filename:		Ivysaur.java
 * Description:		A class that defines the default stats for Ivysaur &
 * 					constructs new Ivysaur pokemon.
 */

/** Ivysaur
 * Number:			002							Base HP:  60	HP Yield:   0
 * M/F Ratio:		87.5% male					Base AT:  62	AT Yield:   0
 * Type(s):			Grass,Poison				Base DE:  63	DE Yield:   0
 * Exp @ lvl 100:	1,059,860					Base SA:  80	SA Yield:   1
 * Evolves @ lvl:	32							Base SD:  80	SD Yield:   1
 * Evolves into:	Venusaur					Base SP:  60	SP Yield:   0
 * Base moves:		None										XP Yield: 141
 */

public class Ivysaur extends Pokemon {

	protected static final int NUMBER			=	2;
	protected static final String NAME			=	"Ivysaur";
	protected static final double MFRATIO		=	87.5;
	protected static final int[] TYPES			=	{3,7};
	protected static final int[] STATS			=	{60,62,63,80,80,60};
	protected static final int[] EVYIELDS		=	{0,0,0,1,1,0,141};
	protected static final int EXPTYPE			=	3;
	protected static final int EVOLVES_AT_LVL	=	32;
	protected static final int EVOLVES_INTO		=	3;
	protected static final int[] BASE_MOVES		=	{-1};
    
    protected static final int[][] LEVEL_UP_MOVES   =   {{20,75},{23,230},{28,74},{31,38},{36,388},{39,235},{44,76}};
    protected static final int[] TMHM_MOVES         =   {92,331,237,241,182,202,218,76,216,104,188,263,290,156,213,412,203,148,14,446,214,363,447,207,164,15,70,249};


	/* Create new Ivysaur with default name */
	public Ivysaur(int trainerID) {
		super(NUMBER,NAME,false,Pokemon.calcGender(MFRATIO),TYPES,
			STATS,EVYIELDS,EXPTYPE,EVOLVES_AT_LVL,EVOLVES_INTO,
			trainerID,BASE_MOVES,LEVEL_UP_MOVES,TMHM_MOVES);
	}

	/* Create new Ivysaur with nickname */
	public Ivysaur(String name,int trainerID) {
		super(NUMBER,name,true,Pokemon.calcGender(MFRATIO),TYPES,
			STATS,EVYIELDS,EXPTYPE,EVOLVES_AT_LVL,EVOLVES_INTO,
			trainerID,BASE_MOVES,LEVEL_UP_MOVES,TMHM_MOVES);
	}

	/* Create new Ivysaur with default name & custom level*/
	public Ivysaur(int level,int trainerID) {
		super(NUMBER,NAME,false,level,Pokemon.calcGender(MFRATIO),TYPES,
			STATS,EVYIELDS,EXPTYPE,EVOLVES_AT_LVL,EVOLVES_INTO,
			trainerID,BASE_MOVES,LEVEL_UP_MOVES,TMHM_MOVES);
	}

	/* Create new Ivysaur with nickname & custom level */
	public Ivysaur(String name,int level,int trainerID) {
		super(NUMBER,name,true,level,Pokemon.calcGender(MFRATIO),TYPES,
			STATS,EVYIELDS,EXPTYPE,EVOLVES_AT_LVL,EVOLVES_INTO,
			trainerID,BASE_MOVES,LEVEL_UP_MOVES,TMHM_MOVES);
	}
}

